package com.mtcarpenter.date;

import org.junit.Test;

import java.time.*;
import java.time.format.DateTimeFormatter;

/**
 * @Author: mtcarpenter
 * @describe
 * @Date: 2019/10/7
 * @Version 1.0
 */
public class DateTest {

    /**
     * LocalDate
     */
    @Test
    public void test01() {
        // 获取当前时间
        LocalDate now = LocalDate.now();
        System.out.println("当前日期：" + now);
        // 构造指定日期 2019-10-01
        LocalDate localDateOf = LocalDate.of(2019, Month.OCTOBER, 1);
        System.out.println("构造指定日期 2019-10-01 = " + localDateOf);
        // 获取指定时区的日期
        LocalDate shanghai = LocalDate.now(ZoneId.of("Asia/Shanghai"));
        System.out.println("获取当前上海的日期=" + shanghai);
        // 分别获取年月日
        System.out.println("年：" + now.getYear() + " 月：" + now.getMonthValue() + " 日：" + now.getDayOfMonth());
        // 日期比较
        System.out.println("now 和 localDateOf 日期比较 :" + now.equals(localDateOf));
    }

    /**
     * LocalTime 时间
     */
    @Test
    public void test02() {
        // 获取当前时间
        LocalTime now = LocalTime.now();
        System.out.println("获取当前时间：" + now);

        //获取指定时间 23：10
        LocalTime date1 = LocalTime.of(23, 10);
        System.out.println("获取指定时间: " + date1);

        //将字符串格式化成时间
        LocalTime date2 = LocalTime.parse("23:10:30");
        System.out.println("将字符串格式化成时间: " + date2);

        // 在当前时间增加两个小时
        LocalTime date3 = now.plusHours(2);
        System.out.println("当前时间:" + now + " 增加两个小时:" + date3);
    }

    /**
     * LocalDateTime 日期时间
     */
    @Test
    public void test03() {
        // 获取当前日期时间
        LocalDateTime localDateTime = LocalDateTime.now();
        System.out.println("获取当前日期时间：" + localDateTime);
        // DateTimeFormatter 是线程安全的 ，而之前的 SimpleDateFormat 是线程安全的
        DateTimeFormatter format = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        String formatDateTime = localDateTime.format(format);
        System.out.println("格式化后的日期 ： " + formatDateTime);
        // 自定义日期时间 2019-10-01 23:30
        LocalDateTime localDateTime1 = LocalDateTime.of(2019, Month.OCTOBER, 1, 23, 30);
        System.out.println("自定义日期时间：" + localDateTime1);
        // 字符串转日期时间
        String datetimeText = "2019-10-07 23:30:30";
        LocalDateTime localDateTime2 = LocalDateTime.parse(datetimeText, format);
        System.out.println("字符串转日期时间：" + localDateTime2);
    }
}
